#define _CRT_SECURE_NO_WARNINGS

//#include <iostream>
//#include <string>
//
//using namespace std;
//
//int main()
//{
//	string str1 = "1234567890";
//	string str2 = "abcdefghij";
//	str1[1] = '*';
//	str2.at(1) = '*';
//	cout << str1 << endl;
//	cout << str2 << endl;
//
//	return 0;
//}

#include <iostream>
#include <string>

using namespace std;

class Solution
{
public:
    string addStrings(string num1, string num2)
    {
        string short_str;
        string long_str;
        if (num1.size() > num2.size()) short_str = num2, long_str = num1;
        else                          short_str = num1, long_str = num2;
        auto itsb = short_str.rbegin(), itse = short_str.rend();
        auto itlb = long_str.rbegin(), itle = long_str.rend();
        for (auto& e : short_str) { e -= '0'; }
        for (auto& e : long_str) { e -= '0'; }
        for (; itsb < itse; itsb++, itlb++)
        {
            (*itlb) += (*itsb);
        }
        for (int i = long_str.size() - 1; i >= 0; i--)
        {
            if (long_str[i] >= 10 && i != 0)
            {
                long_str[i - 1] += long_str[i] / 10;
                long_str[i] %= 10;
            }
        }
        if (long_str[0] >= 10)
        {
            long_str.insert(long_str.begin(), (char)(long_str[0] / 10));
            long_str[1] %= 10;
        }
        for (int i = 0; i < long_str.size(); i++)
        {
            long_str[i] += '0';
        }
        return long_str;
    }
};

int main()
{
	Solution s;
	string str1 = "11";
	string str2 = "123";
	cout << s.addStrings(str1, str2) << endl;
	return 0;
}